package com.bakar.service;

import java.util.Calendar;
import java.util.List;

import com.bakar.dao.MessageDAO;
import com.bakar.dao.MessageJPADAO;
import com.bakar.dao.UserDAO;
import com.bakar.dao.UserJPADAO;
import com.bakar.util.BakarUtils;
import com.bakar.valueobjects.MessageVO;
import com.bakar.valueobjects.UserVO;

public class MessageService {

	

	

	public static String getMessagesForUser(UserVO userVO) {
		MessageDAO messageDAO = new MessageJPADAO();
		List<MessageVO> messageVOs = messageDAO.getMessagesForUser(userVO);
		//messageDAO.removeMessage(userVO);
		return createMessagesXML(messageVOs);
	}

	private static String createMessagesXML(List<MessageVO> messageVOs) {
		StringBuilder sb = new StringBuilder();
		sb.append("<messages>");
		if (messageVOs != null) {
			for (MessageVO message : messageVOs) {

				sb.append("<message>");
				sb.append("<loginid>");
				sb.append(message.getFrmUser());
				sb.append("</loginid>");
				sb.append("<message>");
				sb.append(message.getStringMessage());
				sb.append("</message>");
				sb.append("<time>");
				sb.append(BakarUtils.convertDateToString(message.getTime()));
				sb.append("</time>");
				sb.append("<ownerid>");
				sb.append(message.getOwnerId());
				sb.append("</ownerid>");
				sb.append("</message>");

			}
		}

		sb.append("</messages>");
		return sb.toString();
	}

	public static void setMessageForUser(MessageVO message) {
		
		MessageDAO messageDAO = new MessageJPADAO();
		messageDAO.setMessage(message);
		
		

	}

	public static void removeMessageForUser(UserVO userVO) {
		MessageDAO messageDAO = new MessageJPADAO();
		
			messageDAO.removeMessage(userVO);
	}
	
	
	public static void sendMessageToGroup(MessageVO message){
		UserDAO userDAO = new UserJPADAO();
		MessageDAO messageDAO = new MessageJPADAO();
		List<UserVO> toUsers = userDAO.getGroupApprovedUsers(new UserVO(message.getToUser()));
		MessageVO groupMessage = null;
		String messageOwnerId = message.getFrmUser();
		for(UserVO userVO : toUsers){
			if (!userVO.getLoginId().equals(messageOwnerId)){
				groupMessage = new MessageVO();
				groupMessage.setFrmUser(message.getToUser());
				groupMessage.setMessage(message.getMessage());
				groupMessage.setToUser(userVO.getLoginId());
				groupMessage.setOwnerId(messageOwnerId);
				groupMessage.setTime( Calendar.getInstance().getTime());
				messageDAO.setMessage(groupMessage);
			}
			
			
		}
		
	}

	

}
